Hello, 各位 iT邦幫忙 的粉絲們大家好~~~
本篇是 Re: 從零開始用 Xamarin 技術來複刻過去開發的一個 App: TopStore 系列文的 EP24。
上一篇 EP23 當中已經確認到雙平台 (iOS、Android) 都有根據 EP22 中所撰寫的程式,正確的建立了想要的 SQLite DB 檔案在 App 的專屬資料夾當中。
接著本篇 EP24 就來撰寫有關對於 SQLite DB 處理 "寫、讀、改、刪 與 搜尋" 等操作,以便操作 App 的使用者能正確的將 "聯絡人" 給建立起來。
那就開始囉~~~
打開 DBService 的類別設計,在命名空間引用上加入 using System.Linq,因為接下來要操作的是 ORM 設計的 SQLite.NET。
DbService 中對於 Person 資料的 "讀、搜尋"。
設計 GetPeople 與 GetPerson 的兩個方法,兩個方法都有設定需傳遞的引數,比較特殊的是 GetPeople 的引數有設計預設值。
DbService 中對於 Person 資料的 "寫、改"、"刪"。
設計 SavePerson 與 DeletePerson 的兩個方法,兩個方法都有設定需傳遞的引數。
接下來打開 PersonPageViewModel 當中找到 DeleteCommand,替換掉原本呼叫 MockData 的 DeletePerson 方法。
透過 DbService 的 Instance 來呼叫設計在 DbService 中的 DeletePerson 方法。
繼續在 PeoplePageViewModel 並找到當初設計的 SearchCommand 的方法,把其中利用 MockData 搜尋 People 資料的部份給替換掉。
透過 DbService 的 Instance 來呼叫設計在 DbService 中的 GetPeople 方法。
接下來打開 PersonDetailPageViewModel 並找到當初設計的 PersonId 的屬性(先前設計用來接收傳遞資料的屬性),把其中利用 MockData 的 GetPerson 方法給替換掉。
透過 DbService 的 Instance 來呼叫設計在 DbService 中的 GetPerson 方法。
找到 PersonDetailPageViewModel 的建構式,替換掉當初利用 MockData 設計的 NewPerson。
直接 new 一個 Person 的物件賦予的 EditPerson 屬性(有可能團隊的設計規範上會禁止撰寫直接 new 物件的程式,請根據設計斟酌考量)。
繼續在 PersonDetailPageViewModel 當中找到 SaveCommand,替換掉原本呼叫 MockData 的 EditPerson 方法。
透過 DbService 的 Instance 來呼叫設計在 DbService 中的 SavePerson 方法。
最後再打開 PeoplePage 並設計 override(覆寫) 其 Page 的 OnAppearing 生命週期方法。
在 OnAppearing 方法當中撰寫透過 DbService 設計的 GetPeople 方法,賦予其 PeoplePageViewModel 中的 People 屬性資料。
再一次回到 PeoplePageViewModel 中並找到其建構式,將上一篇 EP23 原本改寫的 People 資料的程式給註解。
由於在 PepolePage 的 OnAppearing 方法中已經有設計 People 的資料取得,所以在 ViewModel 建構式先設定一次 People 的資料就顯得較無意義。
接下來就在雙平台(iOS、Android) 來執行看看吧!
"新增" 聯絡人。
"編輯" 聯絡人。
"搜尋" 聯絡人。
"刪除" 聯絡人。
以上 Person 資料的 "寫、讀、改、刪 與 搜尋" 都能在 SQLite DB 處理完成!
若有興趣可以按照上一回 EP23 的做法,在做每一個操作的時候都把 SQLite DB 檔案從模擬器拉出來看看喔~~~
下一篇 EP25 見唷!
撒啦嘎唷~~~